require("GGE")--引用头

引擎{
    标题 = "游戏模版",
    宽度 = 1024,高度=768,
    帧率 = 60
}
画线  = 引擎.画线
障碍数量 = 5000
格子大小 = 5
精灵类 = require("gge精灵类")
障碍精灵 = 精灵类(0,0,0,格子大小,格子大小):置颜色(0xFF000000)
起始精灵 = 精灵类(0,0,0,格子大小,格子大小):置颜色(0xFFFF0000)
路径精灵 = 精灵类(0,0,0,格子大小,格子大小):置颜色(0xFF00FF00)

格子x = math.floor(引擎.宽度/格子大小)
格子y = math.floor(引擎.高度/格子大小)
路径组 = {}
寻路 = require("Astar类")(格子x,格子y)
--寻路:置模式(true)--true = 4方向

local 计数 = 0

math.randomseed(os.time())
repeat--设置障碍
    local x,y = math.random(0, 格子x-1),math.random(0, 格子y-1)
    if 寻路:是否通行(x,y) then
        寻路:置障碍(x,y)
        计数 = 计数+1
    end
until 计数==障碍数量

repeat--寻找可以落脚的地方。。。
    起始x,起始y = math.random(0, 格子x-1),math.random(0, 格子y-1)
until 寻路:是否通行(起始x,起始y)

function 引擎:更新函数(dt,x,y)--帧率,鼠标x,鼠标y
    local 格子x,格子y = math.floor(x/格子大小),math.floor(y/格子大小)
    if 引擎.鼠标弹起(KEY.LBUTTON) and 寻路:是否通行(格子x,格子y)then
        起始x,起始y = 格子x,格子y
    end
    if 引擎.鼠标弹起(KEY.RBUTTON) and 寻路:是否通行(格子x,格子y)then
        路径组=寻路:反向取路径(起始x,起始y,格子x,格子y)
    end

end

function 引擎:渲染函数(x,y)--鼠标x,鼠标y
    if 引擎.渲染开始() then
        引擎.渲染清除(0xFFFFFFFF)
        for x=0,格子x do--竖
            画线(x*格子大小,0,x*格子大小,引擎.高度,0xFFA7A596)
        end
        for y=0,格子y do--横
            画线(0,y*格子大小,引擎.宽度,y*格子大小,0xFFA7A596)
        end
        for y=0,格子y-1 do
            for x=0,格子x-1 do
                if not 寻路:是否通行(x,y) then
                   障碍精灵:显示(x*格子大小,y*格子大小)
                end
            end
        end
        起始精灵:显示(起始x*格子大小,起始y*格子大小)
        for i,v in ipairs(路径组) do
            路径精灵:显示(v.x*格子大小,v.y*格子大小)
        end
        引擎.渲染结束()
    end
end

function 引擎:按键函数(name,key)

end

function 引擎:退出函数()
    return true
end

